import fs from 'fs/promises'
import path from 'path'

/**
 * 动态导入指定目录下的模块
 * @param dirPath - 要导入模块的目录路径
 */
async function importModules(dirPath: string) {
  // 确保路径是绝对路径，防止路径遍历攻击
  const resolvedDirPath = path.resolve(dirPath)

  try {
    const files = await fs.readdir(resolvedDirPath)

    for (const file of files) {
      // 过滤掉以 "index" 开头且扩展名为 .js 或 .ts 的文件
      if (
        !file.startsWith('index') &&
        (file.endsWith('.js') || file.endsWith('.ts'))
      ) {
        try {
          // 动态导入模块
          const modulePath = path.join(resolvedDirPath, file)
          await import(`${modulePath}`) // 使用 file:// 避免跨平台问题
          console.log(`成功导入模块: ${file}`)
        } catch (error) {
          console.error(`导入模块 ${file} 时出错:`, error)
        }
      }
    }
  } catch (error) {
    console.error(`读取目录 ${dirPath} 时出错:`, error)
  }
}

// 导入 controller 目录下的模块
importModules(path.join(__dirname, '..', '..', 'controller'))

// 导入当前目录下的模块
importModules(__dirname)
